home *** CD-ROM | disk | FTP | other *** search
- 10 REM MOMENT METHOD FOR A YAGI ARRAY
- 20 REM "ANTENNA DESIGN USING PERSONAL COMPUTERS"
- 30 DIM DL(12),SP(12),CR(12),CI(12),V(12)
- 40 DIM ZR(78),ZI(78),A(5)
- 50 DEF FNCABS(X,Y)=SQR(X*X+Y*Y)
- 60 DEF FNDIVR(X1,Y1,X2,Y2)=(X1*X2+Y1*Y2)/(X2*X2+Y2*Y2)
- 70 DEF FNDIVI(X1,Y1,X2,Y2)=(Y1*X2-X1*Y2)/(X2*X2+Y2*Y2)
- 80 DEF FNINDX(I,J,N)=(I-1)*N-(I*I-I)/2+J
- 90 DEF FNLOG10(X)=.4343*LOG(X)
- 100 PI=3.141593
- 110 KEY OFF
- 120 CLS
- 130 COLOR 1,0
- 140 PRINT "THIS PROGRAM DOES A MOMENT METHOD SOLUTION FOR A"
- 150 PRINT "YAGI ARRAY."
- 160 COLOR 4,0
- 170 PRINT
- 180 INPUT "WHAT IS THE FREQUENCY(MHz)";FMC
- 190 INPUT "WHAT IS THE REFLECTOR LENGTH(meters)";DL(1)
- 200 INPUT "WHAT IS THE FED ELEMENT LENGTH(meters)";DL(2)
- 210 INPUT "WHAT ARE THE DIRECTOR LENGTHS(meters)";DL(3)
- 220 INPUT "WHAT IS THE REFLECTOR-FED ELEMENT SPACING(meters)";SP(2)
- 230 INPUT "WHAT IS THE DIRECTOR SPACING(meters)";DS
- 240 INPUT "HOW MANY DIRECTORS";ND
- 250 SP(3)=SP(2)+DS
- 260 FOR I=2 TO ND
- 270 DL(I+2)=DL(3)
- 280 SP(I+2)=SP(I+1)+DS
- 290 NEXT I
- 300 N=ND+2
- 310 INPUT "WHAT IS THE DIPOLE RADIUS(meters)";RAD
- 320 SP(1)=0
- 330 REM COMPUTE Z MATRIX
- 340 XK0=2*PI*FMC/300
- 350 COLOR 14,0
- 360 REM COMPUTE SELF IMPEDANCE EXACTLY
- 370 FOR I=1 TO N
- 380 K=FNINDX(I,I,N)
- 390 IF I>3 THEN GOTO 470
- 400 D=DL(I)/2
- 410 SKD=SIN(XK0*D)
- 420 CKD=COS(XK0*D)
- 430 AM=RAD
- 440 X0=0
- 450 GOSUB 2350
- 460 GOTO 490
- 470 ZMNR=ZR(FNINDX(3,3,N))
- 480 ZMNI=ZI(FNINDX(3,3,N))
- 490 ZR(K)=ZMNR
- 500 ZI(K)=ZMNI
- 510 PRINT I,I,ZMNR,ZMNI
- 520 NEXT I
- 530 REM COMPUTE MUTUAL IMPEDANCE BY THREE-THREE TERM INTEGRATION
- 540 FOR I=1 TO N
- 550 DM=DL(I)/2
- 560 FOR J=I+1 TO N
- 570 K=FNINDX(I,J,N)
- 580 K1=FNINDX(I-1,J-1,N)
- 590 DN=DL(J)/2
- 600 AM=SP(J)-SP(I)
- 610 X0=0
- 620 IF I>3 THEN GOTO 650
- 630 GOSUB 2630
- 640 GOTO 670
- 650 ZMNR=ZR(K1)
- 660 ZMNI=ZR(K1)
- 670 ZR(K)=ZMNR
- 680 ZI(K)=ZMNI
- 690 PRINT I,J,ZMNR,ZMNI
- 700 NEXT J
- 710 NEXT I
- 720 REM COMPUTE CURRENT
- 730 FOR I=1 TO N
- 740 V(I)=0
- 750 NEXT I
- 760 V(2)=1
- 770 FOR I=1 TO N
- 780 CR(I)=V(I)
- 790 CI(I)=0
- 800 NEXT I
- 810 REM SOLVE ZI=V
- 820 GOSUB 1250
- 830 ZINR=FNDIVR(1,0,CR(2),CI(2))
- 840 ZINI=FNDIVI(1,0,CR(2),CI(2))
- 850 REM PRINT CURRENT; COMPUTE POWERS
- 860 PRINT "MODE # CURRENT"
- 870 FOR I=1 TO N
- 880 PRINT USING " ## ##.### ##.###";I,CR(I),CI(I)
- 890 NEXT I
- 900 PT=CR(2)
- 910 PRINT
- 920 PRINT USING "INPUT IMPEDANCE=####.## #####.## ohms";ZINR,ZINI
- 930 REM COMPUTE GAINS
- 940 FR=0
- 950 FI=0
- 960 BR=0
- 970 BI=0
- 980 FOR I=1 TO N
- 990 SR=COS(XK0*SP(I))
- 1000 SI=SIN(XK0*SP(I))
- 1010 SKD=SIN(XK0*DL(I)/2)
- 1020 CKD=COS(XK0*DL(I)/2)
- 1030 FT=(1-CKD)/SKD
- 1040 FR=FR+(CR(I)*SR-CI(I)*SI)*FT
- 1050 FI=FI+(CR(I)*SI+CI(I)*SR)*FT
- 1060 BR=BR+(CR(I)*SR+CI(I)*SI)*FT
- 1070 BI=BI+(-CR(I)*SI+CI(I)*SR)*FT
- 1080 NEXT I
- 1090 FR=FR*60
- 1100 FI=FI*60
- 1110 BR=BR*60
- 1120 BI=BI*60
- 1130 GAIN=4*PI*(FR*FR+FI*FI)/(377*PT)
- 1140 FBR=(FR*FR+FI*FI)/(BR*BR+BI*BI)
- 1150 GDB=10*FNLOG10(GAIN)
- 1160 FBRDB=10*FNLOG10(FBR)
- 1170 PRINT USING "FORWARD GAIN= ##.# dB";GDB
- 1180 PRINT USING "FRONT-TO-BACK RATIO= ##.# dB";FBRDB
- 1190 PRINT
- 1200 PRINT
- 1210 COLOR 4,0
- 1220 INPUT "CONTINUE(Y,N)";IS$
- 1230 IF IS$="N" THEN GOTO 2840
- 1240 GOTO 120
- 1250 REM CHOLESKY LINEAR EQUATION SOLUTION
- 1260 PHS=0
- 1270 IF ZR(1)<>0 THEN PHS=ATN(ZI(1)/ZR(1))/2
- 1280 MAG=SQR(FNCABS(ZR(1),ZI(1)))
- 1290 ZR(1)=MAG*COS(PHS)
- 1300 ZI(1)=MAG*SIN(PHS)
- 1310 FOR K=2 TO N
- 1320 ZINR=FNDIVR(ZR(K),ZI(K),ZR(1),ZI(1))
- 1330 ZINI=FNDIVI(ZR(K),ZI(K),ZR(1),ZI(1))
- 1340 ZR(K)=ZINR
- 1350 ZI(K)=ZINI
- 1360 NEXT K
- 1370 FOR I=2 TO N
- 1380 IMO=I-1
- 1390 IPO=I+1
- 1400 ID=(I-1)*N-(I*I-I)/2
- 1410 II=ID+I
- 1420 FOR L=1 TO IMO
- 1430 LI=FNINDX(L,I,N)
- 1440 ZINR=ZR(II)-ZR(LI)*ZR(LI)+ZI(LI)*ZI(LI)
- 1450 ZINI=ZI(II)-2*ZR(LI)*ZI(LI)
- 1460 ZR(II)=ZINR
- 1470 ZI(II)=ZINI
- 1480 NEXT L
- 1490 PHS=0
- 1500 IF ZR(II)<>0 THEN PHS=ATN(ZI(II)/ZR(II))/2
- 1510 MAG=SQR(FNCABS(ZR(II),ZI(II)))
- 1520 ZR(II)=MAG*COS(PHS)
- 1530 ZI(II)=MAG*SIN(PHS)
- 1540 IF IPO>N THEN GOTO 1710
- 1550 FOR J=IPO TO N
- 1560 IJ=ID+J
- 1570 FOR M=1 TO IMO
- 1580 MD=(M-1)*N-(M*M-M)/2
- 1590 MI=MD+I
- 1600 MJ=MD+J
- 1610 ZINR=ZR(IJ)-ZR(MJ)*ZR(MI)+ZI(MJ)*ZI(MI)
- 1620 ZINI=ZI(IJ)-ZR(MJ)*ZI(MI)-ZI(MJ)*ZR(MI)
- 1630 ZR(IJ)=ZINR
- 1640 ZI(IJ)=ZINI
- 1650 NEXT M
- 1660 ZINR=FNDIVR(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
- 1670 ZINI=FNDIVI(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
- 1680 ZR(IJ)=ZINR
- 1690 ZI(IJ)=ZINI
- 1700 NEXT J
- 1710 NEXT I
- 1720 ZINR=FNDIVR(CR(1),CI(1),ZR(1),ZI(1))
- 1730 ZINI=FNDIVI(CR(1),CI(1),ZR(1),ZI(1))
- 1740 CR(1)=ZINR
- 1750 CI(1)=ZINI
- 1760 FOR I=2 TO N
- 1770 IMO=I-1
- 1780 FOR L=1 TO IMO
- 1790 LI=FNINDX(L,I,N)
- 1800 ZINR=CR(I)-ZR(LI)*CR(L)+ZI(LI)*CI(L)
- 1810 ZINI=CI(I)-ZR(LI)*CI(L)-ZI(LI)*CR(L)
- 1820 CR(I)=ZINR
- 1830 CI(I)=ZINI
- 1840 NEXT L
- 1850 II=FNINDX(I,I,N)
- 1860 ZINR=FNDIVR(CR(I),CI(I),ZR(II),ZI(II))
- 1870 ZINI=FNDIVI(CR(I),CI(I),ZR(II),ZI(II))
- 1880 CR(I)=ZINR
- 1890 CI(I)=ZINI
- 1900 NEXT I
- 1910 NN=((N+1)*N)/2
- 1920 ZINR=FNDIVR(CR(N),CI(N),ZR(NN),ZI(NN))
- 1930 ZINI=FNDIVI(CR(N),CI(N),ZR(NN),ZI(NN))
- 1940 CR(N)=ZINR
- 1950 CI(N)=ZINI
- 1960 NMO=N-1
- 1970 FOR I=1 TO NMO
- 1980 K=N-I
- 1990 KPO=K+1
- 2000 KD=(K-1)*N-(K*K-K)/2
- 2010 FOR L=KPO TO N
- 2020 KL=KD+L
- 2030 ZINR=CR(K)-ZR(KL)*CR(L)+ZI(KL)*CI(L)
- 2040 ZINI=CI(K)-ZR(KL)*CI(L)-ZI(KL)*CR(L)
- 2050 CR(K)=ZINR
- 2060 CI(K)=ZINI
- 2070 NEXT L
- 2080 KK=KD+K
- 2090 ZINR=FNDIVR(CR(K),CI(K),ZR(KK),ZI(KK))
- 2100 ZINI=FNDIVI(CR(K),CI(K),ZR(KK),ZI(KK))
- 2110 CR(K)=ZINR
- 2120 CI(K)=ZINI
- 2130 NEXT I
- 2140 RETURN
- 2150 REM SUBROUTINE TO COMPUTE THE SINE AND COSINE INTEGRALS
- 2160 X2=X*X
- 2170 X4=X2*X2
- 2180 IF X>=1 THEN GOTO 2260
- 2190 X6=X2*X4
- 2200 X3=X*X2
- 2210 X5=X3*X2
- 2220 X7=X5*X2
- 2230 SI=X-X3/18+X5/600-X7/35280!
- 2240 CI=.57722+LOG(X)-X2/4+X4/96-X6/4320
- 2250 RETURN
- 2260 SX=SIN(X)
- 2270 CX=COS(X)
- 2280 FX=(X4+7.24116*X2+2.46394)/X
- 2290 FX=FX/(X4+9.068579*X2+7.15743)
- 2300 GX=(X4+7.54748*X2+1.56407)/X2
- 2310 GX=GX/(X4+12.72368*X2+15.72361)
- 2320 SI=1.57079-FX*CX-GX*SX
- 2330 CI=FX*SX-GX*CX
- 2340 RETURN
- 2350 REM COMPUTE ZMN TERMS
- 2360 A(1)=1
- 2370 A(5)=1
- 2380 A(2)=-4*CKD
- 2390 A(4)=A(2)
- 2400 A(3)=2+4*CKD*CKD
- 2410 ZMNR=0
- 2420 ZMNI=0
- 2430 FOR MM=-2 TO 2
- 2440 FOR NN=-1 TO 1 STEP 2
- 2450 TT=X0+MM*D
- 2460 BET=AM
- 2470 IF ABSYYAM THEN GOTO 2500
- 2480 BET=SQR(AM*AM+TT*TT)-NN*TT
- 2490 IF BET<AM/10 THEN BET=AM*AM/(2*ABS(TT))-AM^4/(8*ABS(TT)^3)
- 2500 X=BET*XK0
- 2510 ALP=XK0*NN*TT
- 2520 CALP=COS(ALP)
- 2530 SALP=SIN(ALP)
- 2540 GOSUB 2150
- 2550 ZMNR=ZMNR+A(MM+3)*(CALP*CI-SALP*SI)
- 2560 ZMNI=ZMNI-A(MM+3)*(SALP*CI+CALP*SI)
- 2570 NEXT NN
- 2580 NEXT MM
- 2590 SKDS=SKD*SKD
- 2600 ZMNR=ZMNR*15/SKDS
- 2610 ZMNI=ZMNI*15/SKDS
- 2620 RETURN
- 2630 REM COMPUTE MUTUAL ZMN BY THREE-TERM INTEGRATION
- 2640 SKM=SIN(XK0*DM)
- 2650 SKN=SIN(XK0*DN)
- 2660 CKN=COS(XK0*DN)
- 2670 A2=AM*AM
- 2680 RM1=SQR(A2+(DN-DM/2)^2)
- 2690 R1=SQR(A2+(DN+DM/2)^2)
- 2700 R0=SQR(A2+(DM/2)^2)
- 2710 FR=COS(XK0*RM1)/RM1-2*CKN*COS(XK0*R0)/R0+COS(XK0*R1)/R1
- 2720 FI=-SIN(XK0*RM1)/RM1+2*CKN*SIN(XK0*R0)/R0-SIN(XK0*R1)/R1
- 2730 SR=4*SIN(XK0*DM/2)*FR
- 2740 SI=4*SIN(XK0*DM/2)*FI
- 2750 RM1=SQR(A2+DN*DN)
- 2760 R0=SQR(A2)
- 2770 FR=2*COS(XK0*RM1)/RM1-2*CKN*COS(XK0*R0)/R0
- 2780 FI=-2*SIN(XK0*RM1)/RM1+2*CKN*SIN(XK0*R0)/R0
- 2790 SR=SR+SKM*FR
- 2800 SI=SI+SKM*FI
- 2810 ZMNR=-10*DM*SI/(SKN*SKM)
- 2820 ZMNI=10*DM*SR/(SKN*SKM)
- 2830 RETURN
- 2840 COLOR 7,0
- 2850 KEY ON
- 2860 END